﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class Admin_Quanlydonvi_DN : System.Web.UI.Page
{
    private string file_save_name = "";
    private string path_save = "";
    //lưu giữ địa chỉ email khi load sửa chữa thông tin doanh nghiệp:dùng để so sánh nếu có sự thay đổi email thì gửi lại
    //email xác nhận thông báo cho đơn vị đó
    private string email_current = "";
    BieumauDataContext db = new BieumauDataContext();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["login_admin"] == null)
        {
            Response.Redirect("Index.aspx");
        }
        if (!IsPostBack)
        {
            Label1.Text = "";
            fill_data(_grid_doanhnghiep);
            load_capnhat_dn();

        }


    }
    protected void _grid_doanhnghiep_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        _grid_doanhnghiep.PageIndex = e.NewPageIndex;
        fill_data(_grid_doanhnghiep);

    }
    /// <summary>
    /// hàm loaddatabase:danh sách doanh nghiệp
    /// </summary>
    /// <param name="gridview"></param>
    public void fill_data(GridView gridview)
    {

        var i = from p in db.tblDoanhNghiepTuNhans orderby p.MaDoanhNghiep descending select p;
        gridview.DataSource = i;
        gridview.DataBind();
    }
    /// <summary>
    /// hàm xóa:database
    /// </summary>
    /// <param name="id"></param>
    public void delete_row(string id)
    {

        var d = (from p in db.tblDoanhNghiepTuNhans where p.MaDoanhNghiep.Contains(id) select p).Single();
        db.tblDoanhNghiepTuNhans.DeleteOnSubmit(d);
        db.SubmitChanges();


    }
    /// <summary>
    /// hàm xóa nhiều doanh nghiệp đang chọn
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn_xoa_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in _grid_doanhnghiep.Rows)
        {
            CheckBox checkbox = (CheckBox)row.FindControl("chkBxSelect");

            //Nếu bản ghi được chọn thì thực hiện xóa
            if (checkbox.Checked)
            {
                string idmuc = _grid_doanhnghiep.DataKeys[row.RowIndex].Value.ToString();
                delete_row(idmuc);


            }
        }
        fill_data(_grid_doanhnghiep);
    }
    /// <summary>
    /// hàm xóa doanh nghiệp:gridview
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void _grid_doanhnghiep_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string idmuc = _grid_doanhnghiep.Rows[e.RowIndex].Cells[1].Text;
        delete_row(idmuc);
        fill_data(_grid_doanhnghiep);

    }

    public void xoathongtin()
    {
        txtEmail_dn.Text = "";
        txtmota.Text = "";
        txtMSKD_dn.Text = "";
        txtSDT_dn.Text = "";
        txtTendoanhnghiep.Text = "";
        txtwebsite_dn.Text = "";
        txtTenGiaoDich_dn.Text = "";
        txtdiachi_dn.Text = "";
        txtMSKD_dn.Focus();
    }
    /// <summary>
    /// Hàm sau đây sẽ tạo mã ngẫu nhiên chỉ gồm các chữ số
    /// </summary>
    /// <param name="codeCount">độ dài chuỗi random</param>
    /// <returns>chuỗi random</returns>
    public string MaNgauNhien_So(int codeCount)
    {
        string allChar = "0,1,2,3,4,5,6,7,8,9";
        string[] allCharArray = allChar.Split(',');
        string randomCode = "";
        int temp = -1;
        Random rand = new Random();
        for (int i = 0; i < codeCount; i++)
        {
            if (temp != -1)
            {
                rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
            }
            int t = rand.Next(10);
            if (temp != -1 && temp == t)
            {
                return MaNgauNhien_So(codeCount);
            }
            temp = t;
            randomCode += allCharArray[t];
        }
        return randomCode;
    }


    /// <summary>
    /// Hàm này trả về chuỗi Password ngẫu nhiên [a-z], [0-9]
    /// </summary>
    /// <param name="PasswordLength">độ dài mật khẩu</param>
    /// <returns>mật khẩu</returns>
    public static string Gen_pass(int PasswordLength)
    {
        string _allowedChars = "abcdefghijkmnopqrstuvwxyz0123456789";
        Random randNum = new Random();
        char[] chars = new char[PasswordLength];
        int allowedCharCount = _allowedChars.Length;
        for (int i = 0; i < PasswordLength; i++)
        {
            chars[i] = _allowedChars[(int)((_allowedChars.Length) * randNum.NextDouble())];
        }
        return new string(chars);
    }
    /// <summary>
    /// hàm tạo Madoanhnghiep
    /// </summary>
    /// <returns>madoanhnghiep:không trùng nhau</returns>
    public string Gen_ID_DN()
    {

        string madoanhnghiep = "";
        string machuoi = MaNgauNhien_So(3) + MaNgauNhien_So(3);
        return madoanhnghiep = "DN" + machuoi;
    }

    /// <summary>
    /// hàm upload file
    /// </summary>
    /// <param name="domain_name"></param>
    /// <param name="save_path"></param>
    /// <param name="file_upload"></param>
    public void hamupload_file(string domain_name, string save_path, FileUpload file_upload)
    {

        //khai báo lấy tên tập tin
        if (file_upload.HasFile)
        {

            string[] validFileTypes = {"PNG","png","jpg","JPG","GIF","gif"};
            string ext = System.IO.Path.GetExtension(file_upload.PostedFile.FileName);
            bool isValidFile = false;
            for (int i = 0; i < validFileTypes.Length; i++)
            {
                if (ext == "." + validFileTypes[i])
                {
                    isValidFile = true;
                    break;
                }
            }
            if (!isValidFile)
            {
                Label1.ForeColor = System.Drawing.Color.Red;
                Label1.Text = "Sai định dạng ảnh,hãy chọn file có phần mở rộng như sau:" +
                string.Join(",", validFileTypes);
            }
            else
            {
                string new_random = MaNgauNhien_So(10);
                string file_name = file_upload.FileName;
                file_name = new_random + "_" + txtTendoanhnghiep.Text+"_"+ext;
                file_save_name = file_name;
                save_path += file_name;
                path_save = save_path;
                //HttpPostedFile file = file_upload.PostedFile;
                //file_upload.SaveAs(save_path);
                //thay thế phương thức:HttpPostedFile file = file_upload.PostedFile;= Stream filenguon = file_upload.PostedFile.InputStream;
                Stream filenguon = file_upload.PostedFile.InputStream;
                //nén ảnh tỉ lệ 1/2 ảnh gốc
                //Resize_image.Set_Image(0.5, filenguon, save_path);
                //nén ảnh theo kích thước tùy ý
                Resize_image.Set_Image(110,80, filenguon, save_path);
            }


        }
    }

    /// <summary>
    /// hàm đăng kí doanh nghiệp mới
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    /// 
    protected void btndangky_nn_Click(object sender, EventArgs e)
    {
       
            if (Page.IsValid)
            {

                string _user = "";
                string _pass = "";
                string _tenhienthi = "";
                string _noidung = "";
                string _chude = "";
                var email = from p in db.Mail_systems select new { user = p.Mail, pass = p.Pass, chude = p.Chude, Noidung = p.Noidung, Tenhienthi = p.Tenhienthi };
                foreach (var ime in email)
                {
                    _user = ime.user.Trim();
                    _pass = ime.pass.Trim();
                    _tenhienthi = ime.Tenhienthi.Trim();
                    _noidung = ime.Noidung.Trim();
                    _chude = ime.chude.Trim();
                }

                tblDoanhNghiepTuNhan doanhnghiep = new tblDoanhNghiepTuNhan();
                //kiểm tra xem logo đã lưu thành công chưa?
                if (file_logo_dn.HasFile)
                {
                    string save_path = Server.MapPath("~/userfiles/logo/");
                    hamupload_file("", save_path, file_logo_dn);
                }
                if (File.Exists(path_save))
                {
                    doanhnghiep.Logo = "userfiles/logo/" + file_save_name;
                }
                else
                {
                    lbllabel.ForeColor = System.Drawing.Color.Red;
                    lbllabel.Text = "Không thể load hình,xin thử lại";
                }

                string matkhau_guimail = Gen_pass(8);
                string matkhau_luu = matkhau_guimail.Trim().MD5_pass_kieu1();
                string madoanhnghiep = Gen_ID_DN();
                doanhnghiep.MaSoKinhDoanh = txtMSKD_dn.Text;
                doanhnghiep.MaDoanhNghiep = madoanhnghiep;
                doanhnghiep.MatKhau = matkhau_luu;
                doanhnghiep.TenDoanhNghiep = txtTendoanhnghiep.Text;
                doanhnghiep.TenGiaoDich = txtTenGiaoDich_dn.Text;
                doanhnghiep.SDT = txtSDT_dn.Text;
                doanhnghiep.MatKhauReset = matkhau_guimail.Trim();
                doanhnghiep.Email = txtEmail_dn.Text;
                doanhnghiep.DiaChi = txtdiachi_dn.Text;
                doanhnghiep.Website = txtwebsite_dn.Text;
                doanhnghiep.MoTaSoLuoc = txtmota.Text;
                db.tblDoanhNghiepTuNhans.InsertOnSubmit(doanhnghiep);
                db.SubmitChanges();
                _noidung += "<br/><p>Thông tin của bạn đã được đăng kí thành công trên hệ thống<br/>" +
                   "Sau khi đăng nhập thành công bạn có thể đổi mật khẩu:</p><br/><b>Tài khoản:</b> " + madoanhnghiep + "<br/><b>Mật khẩu:</b> " + matkhau_guimail + "<br/>";
                
                    Send_mail.Send(_user, txtEmail_dn.Text.Trim(), _chude, _noidung, _pass, _tenhienthi);
               
                 
                
                
                fill_data(_grid_doanhnghiep);
                xoathongtin();
                Response.Redirect(Request.Url.AbsolutePath);




            }

        
       
    }
    /// <summary>
    /// Check email có thay đổi khi cập nhật hay không?
    /// </summary>
    /// <param name="email_old">email đã đăng kí trước đó</param>
    /// <param name="email_new">email khi cập nhật</param>
    /// <returns></returns>
    public string check_mail(string email_old,string email_new)
        {
            string _user = "";
            string _pass = "";
            string _tenhienthi = "";
            string _noidung = "";
            string _chude = "";
            var email = from p in db.Mail_systems select new { user = p.Mail, pass = p.Pass, chude = p.Chude, Noidung = p.Noidung, Tenhienthi = p.Tenhienthi };
            foreach (var ime in email)
            {
                _user = ime.user;
                _pass = ime.pass;
                _tenhienthi = ime.Tenhienthi;
                _noidung = ime.Noidung;
                _chude = ime.chude;
            }
            if (!email_old.Trim().Equals(email_new.Trim()))
            {
                _noidung += "<br/><p>thông tin được thay đổi,bạn sẽ nhận thông tin từ chúng tôi trên địa chỉ email này kể từ lúc này</p><br/>";
                Send_mail.Send(_user.Trim(),email_new.Trim(), _chude, _noidung, _pass.Trim(), _tenhienthi);
            }
            return email_new;
        }
    /// <summary>
    /// Hàm cập nhật thông tin doanh nghiệp
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btndangky_nn_capnhat(object sender, EventArgs e)
    {

        if (Page.IsValid)
        {

           
            string dn = Request.QueryString["iddn"];
            tblDoanhNghiepTuNhan doanhnghiep = db.tblDoanhNghiepTuNhans.Single(p => p.MaDoanhNghiep == dn);
            //nếu có thay đổi logo
            if (file_logo_dn.HasFile)
            {
                string save_path = Server.MapPath("~/userfiles/logo/");
                hamupload_file("", save_path, file_logo_dn);
                //kiểm tra xem logo đã lưu thành công chưa?
            if (File.Exists(path_save))
            {
                doanhnghiep.Logo = "userfiles/logo/" + file_save_name;
                doanhnghiep.MaSoKinhDoanh = txtMSKD_dn.Text;
                doanhnghiep.TenDoanhNghiep = txtTendoanhnghiep.Text;
                doanhnghiep.TenGiaoDich = txtTenGiaoDich_dn.Text;
                doanhnghiep.SDT = txtSDT_dn.Text;
                string email_change = check_mail(email_current, txtEmail_dn.Text.Trim());
                doanhnghiep.Email = email_change;
                doanhnghiep.DiaChi = txtdiachi_dn.Text;
                doanhnghiep.Website = txtwebsite_dn.Text;
                doanhnghiep.MoTaSoLuoc = txtmota.Text;   
                db.SubmitChanges();
                xoathongtin();
                fill_data(_grid_doanhnghiep);
            }
            else
            {
                lbllabel.ForeColor = System.Drawing.Color.Red;
                lbllabel.Text = "Không thể load hình,xin thử lại";
            }
            }
            //nếu ko thay đổi logo
            else
                {
                    doanhnghiep.MaSoKinhDoanh = txtMSKD_dn.Text;
                    doanhnghiep.TenDoanhNghiep = txtTendoanhnghiep.Text;
                    doanhnghiep.TenGiaoDich = txtTenGiaoDich_dn.Text;
                    doanhnghiep.SDT = txtSDT_dn.Text;
                    string email_change = check_mail(email_current, txtEmail_dn.Text.Trim());
                    doanhnghiep.Email = email_change;
                    doanhnghiep.DiaChi = txtdiachi_dn.Text;
                    doanhnghiep.Website = txtwebsite_dn.Text;
                    doanhnghiep.MoTaSoLuoc = txtmota.Text;
                    db.SubmitChanges();
                    xoathongtin();
                    fill_data(_grid_doanhnghiep);
                }
           
        }
    }
    /// <summary>
    /// Hàm load dữ liệu doanh nghiệp khi cập nhât
    /// </summary>
    public void load_capnhat_dn()
    {
        if (Request.QueryString["iddn"] != null)
        {

            string dn = Request.QueryString["iddn"];
            tblDoanhNghiepTuNhan ttdn = db.tblDoanhNghiepTuNhans.Single(p => p.MaDoanhNghiep == dn);
            txtMSKD_dn.Text = ttdn.MaSoKinhDoanh;
            txtTendoanhnghiep.Text = ttdn.TenDoanhNghiep;
            txtTenGiaoDich_dn.Text = ttdn.TenGiaoDich;
            txtSDT_dn.Text = ttdn.SDT;
            txtEmail_dn.Text = ttdn.Email;
            email_current = ttdn.Email.Trim();
            txtdiachi_dn.Text = ttdn.DiaChi;
            txtwebsite_dn.Text = ttdn.Website;
            txtmota.Text = ttdn.MoTaSoLuoc;

        }
       
    }


}